// 内置类型

type propsType = {
    name: string;
    age: number;
    sex: boolean
}
type propsType2 = {
    height: number
}

type propsType3 = string | number | boolean | undefined | null


// Record 可以定义 一个对象类型的 key 和 value 类型
type recordType = Record<string, propsType>
// Partial 可以将对象类型的所有属性变为可选
type partaltype = Partial<propsType>
//  required ： 可以将对象属性的类型变为必选
type requiredType = Required<propsType>

// omit 可以将对象中的某些属性剔除
type omitType = Omit<propsType, 'name'>
// Exclude 可以将联合类型中的某些类型删除
type excluedType = Exclude<keyof propsType, 'name'>

// pick 可以将对象类型中的某些属性挑出来
type pickType = Pick<propsType, 'name'>
// Extract 可以将联合类型中的某些类型保留
type extractType = Extract<keyof propsType, 'name'>

// NonNullable 可以讲联合类型中的 null 和 undefined 剔除
type nonNullableType = NonNullable<propsType3>
// ReturnType 可以获取函数的返回值类型
type returnType = ReturnType<() => propsType>
// parameters 可以获取函数的参数类型
type parametersType = Parameters<(pro: number, pro2: string) => propsType>
